/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.aggjpsv.libraryserver.piles;

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

/**
 *
 * @author Guilherme
 */
public class Piles extends HashMap<String,Stack>
{
    /*
     Demostre o uso do método POST com um recurso que manipule o conteúdo de pilhas no servidor, 
     baseado nos dados da requisição POST:
        - acao=criar, nome=PILHA - cria uma pilha chamada PILHA, se ainda não existe.
        - acao=zerar, nome=PILHA - apagar todo o conteúdo da pilha PILHA, se existe.
        - acao=push, nome=PILHA, dado=TEXTO - adiciona o TEXTO ao topo da PILHA, se existe.
        - acao=pop, nome=PILHA - retorna como resultado o topo da PILHA, e o remove, se existe.
        - acao=dump, nome=PILHA - retorna todo o conteúdo da PILHA como resultado.
     */
    
    public boolean create(String key)
    {
        Stack s = new Stack();
        if (super.containsKey(key))
        {
            return false;
        }
        super.put(key, s);
        return true;
    }
    
    public boolean delete(String key)
    {
        return (super.remove(key) != null) ? true : false;
    }
    
    public boolean reset(String key)
    {
        super.get(key).clear();
        return super.get(key).empty();
    }
    
    public boolean resetAll()
    {
        for(Map.Entry<String,Stack> item : super.entrySet())
        {
            super.remove(item.getKey());
        }
        return super.isEmpty();
    }
    
    public Object push(String key, String data)
    {
        return super.get(key).push(data);
    }
    
    public Object pop(String key)
    {
        return super.get(key).pop();
    }
    
   public String[] dump(String key)
    {
        Stack s = super.get(key);
        Object[] o = s.toArray();
        String[] temp = new String[o.length];
        int i = 0;
        for (Object ob : o) {
            temp[i++] = (String) ob;
        }
        return temp;
    }
           
    public boolean isEmpty() {  
        return super.isEmpty();  
    } 
}
